'''
Created on 23/03/2012

@author: nicolas
'''

import pylab as p

N = 100
STEP = 1
Y0 = 20
serie = p.arange(0, N + 1, STEP)

# Defino el escalon
def U(n):
    if n >= 0:
        return 1
    else:
        return 0

# Sea la entrada X(n)=sin(n) * U(n)
def X(n):
    return((p.sin(n) * U(n)))


# Que se le aplica al sistema Y(n)=(n**3)*X(n)
def Y(n):
    return ((n**3) * X(n))


# muestreo:
muestreoX = []
muestreoY = []
muestreoY_Y0 = []

for n in serie:
    muestreoX.append(X(n))
    muestreoY.append(Y(n))
    muestreoY_Y0.append(Y(n - Y0))
    
    
# Se observa en el grafico que la salida no deja de aumentar, y ademas lo hace de manera directamente proporcional al tiempo,
# por lo que no es estable.    

# Si se aplica la misma entrada desplazada, la salida del mismo sistema es distinta a la salida desplazada. por lo que no es invariante.
f = p.figure(1)

f.subplots_adjust(hspace=.5)

p.subplot(311)
p.title('Entrada')
p.plot(serie, muestreoX)
p.plot(serie, muestreoX, 'x')

p.subplot(312)
p.title('Salida no estable')
p.plot(serie, muestreoY)
p.plot(serie, muestreoY, 'x')

p.subplot(313)
p.title('Salida no invariante - Y0=' + str(Y0))
p.plot(serie, muestreoY_Y0)
p.plot(serie, muestreoY_Y0, 'x')

p.savefig('punto_1.png')

p.show()
